﻿/*
最小公倍数 
Time Limit:1000MS  Memory Limit:32768K

  
Description:
求两个正整数的最小公倍数。

Input:
输入数据含有不多于50对的数据，每对数据由两个正整数(0<n1,n2<100000)组成。 
Output:
对于每组数据n1和n1，计算最小公倍数，每个计算结果应占单独一行。 
Sample Input:
6 5 18 12
Sample Output:
30
36
*/

//#include <stdio.h>
//#include <stdlib.h>
#include <iostream>
#include <cstdlib>

namespace ctb
{
	unsigned gcd(unsigned, unsigned);
}
unsigned ctb::gcd(unsigned m, unsigned n)
{
	unsigned times=1u;
	
	
	while(1)
	{
		unsigned flag=0;
		if(0==n)return times*m;
		
		if(m<n)
		{
			unsigned xchg=m;
			m=n;
			n=xchg;
		}
		
		if(m&0x1u && n &0x1u)
		{
			int tm=m, tn=n;
			m=(tm+tn)>>1;
			n=(tm-tn)>>1;
			continue;
		}
		
		if(0==(m & 0x1u))
		{
			m>>=1;
			++flag;
		}
		if(0==(n & 0x1u))
		{
			n>>=1;
			++flag;
		}	
		if(2u==flag)
			times<<=1;
		
	}
}
int main(int argc, char* argv[])
{
	unsigned m, n;
	using ctb::gcd;
	while (std::cin>>m>>n)
	{
		std::cout<<(m/gcd(m, n)*n)<<std::endl;
	}
	return EXIT_SUCCESS;
}

